#####
#####  
#####  数据管道：用来进行数据的存储入库
#####  数据会经过多个管道，且有先后之分，管道定义后记得在配置文件里面注册
#####  processs_item中的参数spider就是我们对应爬虫实例对象
#####  已注册管道：AmaPipeline、AmaPipeline1。中间管道记得返回数据
#####  一个管道类通常具有三个实例方法：epen_spider 、process_item、close_spider
#####  open_spider:在开启爬虫的时候会调用，通常用于开启上下文，如创建数据库链接、打开文件
#####  close_spider:在爬虫结束的时候会调用，通常用于关闭上下文，如关闭数据库链接等
#####  process_item：每一次爬虫返回数据的时候执行的
#####  spider中的提取的数据会交给依次注册的数据管道去处理，jobs爬虫提取的数据交给process_item方法去处理，这里将数据存入csv文件
#####

import json
from itemadapter import ItemAdapter
import logging
from ama.config import  ISDOWNLOAD_TENCENT
from ama.config import  DATACONNECT
from pymysql import *
import matplotlib.pyplot as plt
import random
import time
import pymysql
logger = logging.getLogger(__name__)

class AmaPipeline:
    def open_spider(self, spider):
      # print("*" * 20  + "爬虫开始" + "*" * 20)
      pass
    def close_spider(self, spider):
      # print("*" * 20  + "爬虫结束" + "*" * 20)
      # x = range(0,120)
      # y = [ random.randint(20,35) for i in range(120)]
      # plt.plot(x,y)
      # plt.show()
      # time.sleep(10)
      # plt.close()
      pass
    def process_item(self, item, spider):
        
        return item

class AmaPipeline1:
    def process_item(self, item, spider):
        if spider.name == "info":
          self.handleinfo(item)
        return item
    
    def handleinfo(self,item):
      print(item)
      conn = pymysql.connect(host='localhost', port=3306, user='root', password='961948438', db='hkzf',
          charset='utf8mb4'
      )
      cursor = conn.cursor()
      sql = 'insert into data_carwler_price_monitor(province,city,dealer,brand,model,style,guide_price,present_price,discount,create_time,source,update_time) values("%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s")' % (
        item["省"],
        item["市"],
        item["经销商名称"],
        item["品牌"],
        item["车型"],
        item["车款"],
        item["指导价"],
        item["经销商现价"],
        item["降价额度"],
        
        item["爬取时间"],
        item["数据来源"],
        item["爬取时间"]
      )
      cursor.execute(sql)
      conn.commit()
      cursor.close()
      conn.close()